﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ThuVien;
using System.Data;
using System.IO;
using System.Text;
namespace TranTekBE.Missed
{
    public partial class Main : PageRequireLogin
    {
        TranTekBE.Maintenance.func abcd = new TranTekBE.Maintenance.func();
        protected void Page_Load(object sender, EventArgs e)
        {
            ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "LoadJS", "LoadJS();", true);           
            /*
             * Khởi tạo thông tin cơ bản 
             */
            lastname.Text = UserInfo.LastName;
            if (!IsPostBack)
            {
                stock.Checked = true;
                string now = DateTime.Now.ToString("MM/dd/yyyy");
                end.Text = now;
                start.Text = now;
                DataSet liststore = FunctionsUtils.Database.ExecuteQuery("SELECT C007000 as ID, C007001 as Name FROM T0070");
                if (liststore != null)
                {
                    
                    FunctionsUtils.BindDataForControlList(idstore, liststore, "ID", "Name");
                    idstore.Items.Add(new ListItem("Tất cả", "-1"));
                }
                titlesearch.Text = "Đơn hàng nhỡ trong ngày: " + now;
                idstore.SelectedIndex = idstore.Items.Count-1;
            }



            /*
            * Số dòng hiễn thị trên 1 page
            */

            int limitrow = 10;

            /*
             * Lấy page hiện tại 
             */
            int currPage = 1;
            string page = Request.QueryString["page"];
            if (page != null)
                currPage = int.Parse(page);
            /*
             * kiểm tra các điều kiện
             */
            string loccuahang = "";
            string loccuahangstatus = ", tất cả các cửa hàng";
            if (idstore.SelectedValue != "-1")
            {
                loccuahang = " and IDCuaHang='" + idstore.SelectedValue + "'";
                loccuahangstatus = ", của cửa hàng " + abcd.getCuaHang(idstore.SelectedValue);
            }
            string locid = "";
            string lydoloc = ", tất cả lý do";
            if (!allselect.Checked)
            {
                if (stock.Checked)
                {
                    locid = " and IDLyDo = 1";
                    lydoloc = ", lý do hết hàng";
                }
                else
                {
                    locid = " and IDLyDo = 2";
                    lydoloc = ", lý do hàng chưa được bán";
                }
            }

            /*
             * Số lượng yêu cầu
             */
            string sqlnum = "SELECT * FROM tbl_Missed WHERE ThoiGianGui >= '" + start.Text + "' and ThoiGianGui <= '" + end.Text + "'" + loccuahang + locid + " ORDER BY ID DESC";
            DataSet countrequest = FunctionsUtils.Database2.ExecuteQuery(sqlnum);
            int numrow = countrequest.Tables[0].Rows.Count;

            /*
             * Tính số trang
             */
            int _page = (numrow + (limitrow - 1)) / limitrow;
            /*
            * Lấy danh sách tất cả các đơn hàng missed ( id, tiêu đề, nội dung, thời gian... )
            */
            /*
             * Tiêu đề search
             */

            titlesearch.Text = "Kết quả từ: " + start.Text + " đến: " + end.Text + loccuahangstatus + lydoloc;

            /*
             * Search
             */
            string sql = "SELECT TOP " + limitrow + " * FROM tbl_Missed WHERE ID NOT IN (SELECT TOP " + (currPage - 1) * limitrow + " ID FROM tbl_Missed WHERE ThoiGianGui >= '" + start.Text + "' and ThoiGianGui <= '" + end.Text + "'" + loccuahang + locid + " ORDER BY ID DESC) and ThoiGianGui >= '" + start.Text + "' and ThoiGianGui <= '" + end.Text + "'" + loccuahang + locid + " ORDER BY ID DESC";
            DataSet showall = FunctionsUtils.Database2.ExecuteQuery(sql);
            showmissedorder.Text = "";
            if (showall != null)
            {
                foreach (DataRow Rows in showall.Tables[0].Rows)
                {
                    showmissedorder.Text += "<tr class=\"odd gradeX\">";
                    showmissedorder.Text += "<td>" + Rows[2].ToString() + "</td>";
                    showmissedorder.Text += "<td>" + Rows[1].ToString() + "</td>";
                    showmissedorder.Text += "<td>" + abcd.getWhy(Rows[3].ToString()) + "</td>";
                    showmissedorder.Text += "<td>" + abcd.getCuaHang(Rows[5].ToString()) + "</td>";
                    showmissedorder.Text += "<td>" + Rows[7].ToString().Split(' ')[0] + "</td>";
                    showmissedorder.Text += "</tr>";
                }
            }
            if (currPage == 1)
            {
                pageselect.Text = "<li class=\"prev disabled\"><a>← Trang trước</a></li>";
                pageselect.Text += "<li class=\"prev disabled\"><a>" + currPage + "</a></li>";
                if (_page > currPage)
                {
                    pageselect.Text += "<li class=\"next\"><a href=\"Main.aspx?page=2\">Trang sau →</a></li>";
                }
                else
                {
                    pageselect.Text += "<li class=\"next disabled\"><a>Trang sau →</a></li>";
                }
            }
            else
            {
                pageselect.Text = "<li class=\"prev\"><a href=\"Main.aspx?page=" + (currPage - 1) + "\">← Trang trước</a></li>";
                pageselect.Text += "<li class=\"prev disabled\"><a>" + currPage + "</a></li>";
                if (_page > currPage)
                {
                    pageselect.Text += "<li class=\"next\"><a href=\"Main.aspx?page=" + (currPage + 1) + "\">Trang sau →</a></li>";
                }
                else
                {
                    pageselect.Text += "<li class=\"next disabled\"><a>Trang sau →</a></li>";
                }
            }

        }

        protected void fill_Click(object sender, EventArgs e)
        {
            /*
             * Số dòng hiễn thị trên 1 page
             */

            int limitrow = 10;

            /*
             * Lấy page hiện tại 
             */
            int currPage = 1;
            string page = Request.QueryString["page"];
            if (page != null)
                currPage = int.Parse(page);
            /*
             * kiểm tra các điều kiện
             */
            string loccuahang = "";
            string loccuahangstatus = ", tất cả các cửa hàng";
            if (idstore.SelectedValue != "-1")
            {
                loccuahang = " and IDCuaHang='" + idstore.SelectedValue + "'";
                loccuahangstatus =", của cửa hàng "+ abcd.getCuaHang(idstore.SelectedValue);
            }
            string locid = "";
            string lydoloc = ", tất cả lý do";
            if (!allselect.Checked)
            {
                if (stock.Checked)
                {
                    locid = " and IDLyDo = 1";
                    lydoloc = ", lý do hết hàng";
                }
                else
                {
                    locid = " and IDLyDo = 2";
                    lydoloc = ", lý do hàng chưa được bán";
                }
            }

            /*
             * Số lượng yêu cầu
             */
            string sqlnum = "SELECT * FROM tbl_Missed WHERE ThoiGianGui >= '" + start.Text + "' and ThoiGianGui <= '" + end.Text + "'" + loccuahang + locid + " ORDER BY ID DESC";
            DataSet countrequest = FunctionsUtils.Database2.ExecuteQuery(sqlnum);
            int numrow = countrequest.Tables[0].Rows.Count;

            /*
             * Tính số trang
             */
            int _page = (numrow + (limitrow - 1)) / limitrow;
            /*
            * Lấy danh sách tất cả các đơn hàng missed ( id, tiêu đề, nội dung, thời gian... )
            */
            /*
             * Tiêu đề search
             */

            titlesearch.Text = "Kết quả từ: " + start.Text + " đến: " + end.Text + loccuahangstatus + lydoloc;

            /*
             * Search
             */
            string sql = "SELECT TOP " + limitrow + " * FROM tbl_Missed WHERE ID NOT IN (SELECT TOP " + (currPage - 1) * limitrow + " ID FROM tbl_Missed WHERE ThoiGianGui >= '" + start.Text + "' and ThoiGianGui <= '" + end.Text + "'" + loccuahang + locid + " ORDER BY ID DESC) and ThoiGianGui >= '" + start.Text + "' and ThoiGianGui <= '" + end.Text + "'" + loccuahang + locid + " ORDER BY ID DESC";
            DataSet showall = FunctionsUtils.Database2.ExecuteQuery(sql);
            showmissedorder.Text = "";
            if (showall != null)
            {
                foreach (DataRow Rows in showall.Tables[0].Rows)
                {
                    showmissedorder.Text += "<tr class=\"odd gradeX\">";
                    showmissedorder.Text += "<td>" + Rows[2].ToString() + "</td>";
                    showmissedorder.Text += "<td>" + Rows[1].ToString() + "</td>";
                    showmissedorder.Text += "<td>" + abcd.getWhy(Rows[3].ToString()) + "</td>"; 
                    showmissedorder.Text += "<td>" + abcd.getCuaHang(Rows[5].ToString()) + "</td>";
                    showmissedorder.Text += "<td>" + Rows[7].ToString().Split(' ')[0] + "</td>";
                    showmissedorder.Text += "</tr>";
                }
            }
            if (currPage == 1)
            {
                pageselect.Text = "<li class=\"prev disabled\"><a>← Trang trước</a></li>";
                pageselect.Text += "<li class=\"prev disabled\"><a>" + currPage + "</a></li>";
                if (_page > currPage)
                {
                    pageselect.Text += "<li class=\"next\"><a href=\"Main.aspx?page=2\">Trang sau →</a></li>";
                }
                else
                {
                    pageselect.Text += "<li class=\"next disabled\"><a>Trang sau →</a></li>";
                }
            }
            else
            {
                pageselect.Text = "<li class=\"prev\"><a href=\"Main.aspx?page=" + (currPage - 1) + "\">← Trang trước</a></li>";
                pageselect.Text += "<li class=\"prev disabled\"><a>" + currPage + "</a></li>";
                if (_page > currPage)
                {
                    pageselect.Text += "<li class=\"next\"><a href=\"Main.aspx?page=" + (currPage + 1) + "\">Trang sau →</a></li>";
                }
                else
                {
                    pageselect.Text += "<li class=\"next disabled\"><a>Trang sau →</a></li>";
                }
            }
        }

        protected void export_Click(object sender, EventArgs e)
        {
            /*
             * Create datagridview
             */

            /*
             * kiểm tra các điều kiện
             */
            string loccuahang = "";
            string loccuahangstatus = ", TẤT CẢ CÁC CỬA HÀNG";
            if (idstore.SelectedValue != "-1")
            {
                loccuahang = " and IDCuaHang='" + idstore.SelectedValue + "'";
                loccuahangstatus = ", CỦA CỬA HÀNG " + abcd.getCuaHang(idstore.SelectedValue);
            }
            string locid = "";
            string lydoloc = ", TẤT CẢ CÁC LÝ DO";
            if (!allselect.Checked)
            {
                if (stock.Checked)
                {
                    locid = " and IDLyDo = 1";
                    lydoloc = ", LÝ DO HẾT HÀNG";
                }
                else
                {
                    locid = " and IDLyDo = 2";
                    lydoloc = ", LÝ DO HÀNG CHƯA ĐƯỢC BÁN";
                }
            }

            /*
             * Số lượng yêu cầu
             */

            //select TOP 1 Sp.C001203 as 'MaSP' , Gia.C000704 as 'Gia' from T0012 SP  Left Join T0007 Gia on SP.C001200 = Gia.C000701 WHERE Sp.C001203 = 'VI - 17208780' order by Gia.C000704 desc 


            string sqlnum = "SELECT TenThuoc as 'Tên Thuốc' ,IDThuoc as 'Mã Thuốc',tbl_Why.Name as 'Giá Thuốc', tbl_Why.Name as 'Lý Do',IDCuaHang as 'Mã Cửa Hàng', IDNguoiGui as 'Người Gửi', ThoiGianGui as 'Thời Gian Gửi' FROM tbl_Missed, tbl_Why WHERE tbl_Missed.IDLyDo = tbl_Why.ID and ThoiGianGui >= '" + start.Text + "' and ThoiGianGui <= '" + end.Text + "'" + loccuahang + locid + " ORDER BY tbl_Missed.ID DESC";
            DataSet countrequest = FunctionsUtils.Database2.ExecuteQuery(sqlnum);
            if (countrequest != null && countrequest.Tables[0].Rows.Count > 0)
            {
                foreach (DataRow Rows in countrequest.Tables[0].Rows)
                {
                    Rows[4] = abcd.getCuaHang(Rows[4].ToString());
                    Rows[2] = abcd.getGia(Rows[1].ToString()); 
                    if(Rows[1].ToString().Split(' ')[0] == "-1")
                        Rows[1] = "Mã không tồn tại";
                }
                string header = "BÁO CÁO ĐƠN HÀNG BỊ NHỠ TỪ NGÀY: " + start.Text + " ĐẾN NGÀY " + end.Text + loccuahangstatus + lydoloc;
                string footer = "ƯỚC TÍNH DOANH THU BỎ LỠ : ";
                exportexcel.DataSource = countrequest;
                exportexcel.DataBind();
                /*
                 *  Add Header
                 */
                GridViewRow HeaderGridRow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert);
                TableCell HeaderCell = new TableCell();
                HeaderCell.Text = header;
                HeaderCell.ColumnSpan = 7;
                HeaderGridRow.Cells.Add(HeaderCell);
                exportexcel.Controls[0].Controls.AddAt(0, HeaderGridRow);
                /*
                 * Sum row
                 */

                float totalMarks = 0;
                foreach (GridViewRow row in exportexcel.Rows)
                {
                    string gia = row.Cells[2].Text;
                    float total = float.Parse(gia);
                    if(total < 99999998)
                        totalMarks = totalMarks + total;
                }

                footer += Convert.ToString(totalMarks);
                /*
                 *  Add Footer
                 */
                GridViewRow FooterGridRow = new GridViewRow(0, 0, DataControlRowType.Footer, DataControlRowState.Insert);
                TableCell FooterCell = new TableCell();
                FooterCell.Text = footer;
                FooterCell.ColumnSpan = 7;
                FooterGridRow.Cells.Add(FooterCell);

                exportexcel.Controls[0].Controls.AddAt(exportexcel.Rows.Count + 3, FooterGridRow);

                int numrow = countrequest.Tables[0].Rows.Count;


                /*
                 * Khoi tao file excel
                 */
                Response.ClearContent();
                string now = DateTime.Now.Ticks.ToString();
                Response.AppendHeader("content-disposition", "attachment; filename=Bao-cao-don-hang-" + now + ".xls");
                Response.ContentType = "application/excel";
                StringWriter stringWrite = new StringWriter();
                HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWrite);
                exportexcel.RenderControl(htmlTextWriter);
                Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
                Response.Write(stringWrite.ToString());
                Response.End();
            }

        }
        public override void VerifyRenderingInServerForm(Control control)
        {
        }
    }
}